home *** CD-ROM | disk | FTP | other *** search
- ;; Keygenerator for AfKayAs CrackMe #1 (by LaZaRuS)
-
- .386
- .model flat, stdcall
- option casemap: none
-
- include \masm32\include\windows.inc
- include \masm32\include\kernel32.inc
- include \masm32\include\user32.inc
- includelib \masm32\lib\kernel32.lib
- includelib \masm32\lib\user32.lib
-
- wsprintfA proto C :DWORD,:DWORD,:VARARG
- wsprintf TEXTEQU <wsprintfA>
-
- WinMain proto:DWORD,:DWORD,:DWORD,:DWORD
-
- .data
- ClassName db "SimpleWindow",0
- AppName db "KeyGenerator for AfKayAs CrackMe #1",0
- EditClassName db "edit",0
- EditText db "LaZaRuS",0
- EditText2 db "AKA-682793",0
- sprint db "%lu",0
- least db "Enter at least one char",0
-
- .data?
- hInstance HINSTANCE ?
- hwndEdit HWND ?
- hwndEdit2 HWND ?
- buffer db 512 dup(?)
- buffer2 db 512 dup(?)
-
- .const
- EditID1 equ 1
- EditID2 equ 2
-
- .code
- start:
- invoke GetModuleHandle, NULL
- invoke WinMain, hInstance, NULL, NULL, SW_SHOWDEFAULT
- invoke ExitProcess, 0
-
- WinMain proc hInst:HINSTANCE, hPrevInst:HINSTANCE, CmdLine:LPSTR, CmdShow:DWORD
- LOCAL wc:WNDCLASSEX
- LOCAL msg:MSG
- LOCAL hwnd:HWND
-
- mov wc.cbSize, SIZEOF WNDCLASSEX
- mov wc.style, CS_HREDRAW or CS_VREDRAW
- mov wc.lpfnWndProc, OFFSET WndProc
- mov wc.cbClsExtra, NULL
- mov wc.cbWndExtra, NULL
- push hInstance
- pop wc.hInstance
- mov wc.hbrBackground, COLOR_WINDOW+1
- mov wc.lpszMenuName, NULL
- mov wc.lpszClassName, OFFSET ClassName
- invoke LoadIcon, NULL, IDI_APPLICATION
- mov wc.hIcon, eax
- mov wc.hIconSm, eax
- invoke LoadCursor, NULL, IDC_ARROW
- mov wc.hCursor, eax
- invoke RegisterClassEx, addr wc
- invoke CreateWindowEx, NULL,\
- ADDR ClassName,\
- ADDR AppName,\
- WS_BORDER or WS_SYSMENU,\
- 200,\
- 200,\
- 290,\
- 130,\
- NULL,\
- NULL,\
- hInst,\
- NULL
- mov hwnd, eax
- invoke ShowWindow, hwnd, CmdShow
- invoke UpdateWindow, hwnd
-
- .WHILE TRUE
- invoke GetMessage, ADDR msg, NULL, 0, 0
- .BREAK .IF (!eax)
- invoke TranslateMessage, ADDR msg
- invoke DispatchMessage, ADDR msg
- .ENDW
- mov eax, msg.wParam
- ret
- WinMain endp
-
- WndProc proc hWnd:HWND,uMsg:UINT,wParam:WPARAM,lParam:LPARAM
- LOCAL hdc:HDC
- LOCAL ps:PAINTSTRUCT
- LOCAL rect:RECT
- LOCAL fln:DWORD
- .IF uMsg==WM_DESTROY
- invoke PostQuitMessage,NULL
- .ELSEIF uMsg==WM_CREATE
- invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,ADDR EditText,\
- WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or ES_AUTOHSCROLL,\
- 20,15,245,25,hWnd,EditID1,hInstance,NULL
- mov hwndEdit, eax
- invoke CreateWindowEx,WS_EX_CLIENTEDGE, ADDR EditClassName,ADDR EditText2,\
- WS_CHILD or WS_VISIBLE or WS_BORDER or ES_LEFT or ES_AUTOHSCROLL or ES_READONLY,\
- 20,50,245,25,hWnd,EditID2,hInstance,NULL
- mov hwndEdit2, eax
-
- .ELSEIF uMsg==WM_COMMAND
- mov eax, wParam
- .IF ax==EditID1
- shr eax, 16
- .IF ax==EN_CHANGE ;; FROM NOW I TAKE NO RESPONSE FOR ANYTHING (THE REST WAS "BORROWED"
- ;; FROM ICZELION'S FANTASTIC TUTS)
- invoke GetWindowText,hwndEdit,ADDR buffer,512 ;; Get Name
- invoke lstrlen, ADDR buffer ;; Get length of name
- cmp eax, 0 ;; if it is zero
- je looser ;; then jump
- imul eax, 17CFBh ;; multiply length with 17CFBh
- mov ebx, eax
- mov esi, OFFSET buffer
- xor eax, eax
- lodsb ;; load first char from name in eax
- add ebx, eax ;; add ASCII value of char to lenght * 17CFB
- invoke wsprintf, ADDR buffer, ADDR sprint, ebx
- mov esi, OFFSET buffer
- mov edi, OFFSET buffer2
- mov al, 'A' ;; these
- stosb ;; lines
- mov al, 'K' ;; add
- stosb ;; A
- mov al, 'A' ;; K
- stosb ;; A
- mov al, '-' ;; - to the beginning of every serial
- stosb
- movsb ;; these lines
- movsb ;; add the
- movsb ;; serial
- movsb ;; to AKA-
- movsb ;; ""
- movsb ;; ""
- movsb ;; ""
- movsb ;; ""
- movsb ;; ""
- invoke SetWindowText, hwndEdit2, ADDR buffer2 ;; set text of second edit field
- jmp weiter
- looser:
- invoke SetWindowText, hwndEdit2, ADDR least ;; "Enter at least one char"
- weiter:
- ;; HERE GOES ICZELION AGAIN :)
- .ENDIF
- .ENDIF
- .ELSE
- invoke DefWindowProc,hWnd,uMsg,wParam,lParam
- ret
- .ENDIF
- xor eax, eax
- ret
- WndProc endp
-
- end start
-
- end start